package br.unp.tasi.loja.controladores;

import br.unp.tasi.loja.entidades.Produto;
import br.unp.tasi.loja.repositorios.RepositorioProduto;
import java.util.List;
import javax.inject.Inject;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * Controlador de Produtos
 * @author jfrank
 */
@Controller
@RequestMapping("/produtos")
public class ControladorProduto {

  private transient final Log log = LogFactory.getLog(ControladorProduto.class);
  @Inject
  RepositorioProduto repositorioProduto;

  /**
   * Listar os produtos da loja
   * @param modelo
   * @return
   */
  @RequestMapping(value = "/ofertas", method = RequestMethod.GET)
  public String listarOfertas(Model modelo) {
    List<Produto> produtos = repositorioProduto.localizarOfertas();
    modelo.addAttribute("produtos", produtos);
    return "produto/ofertas";
  }

  /**
   * Detalhar o produto
   * @param modelo
   * @param id
   * @return
   */
  @RequestMapping(value = "/detalhar", method = RequestMethod.GET)
  public String detalhar(Model modelo, @RequestParam("id") Long id) {
    Produto produto = repositorioProduto.localizarPeloID(id);
    modelo.addAttribute("produto", produto);
    return "produto/detalhar";
  }

  /**
   * Listar os produtos da loja
   * @param modelo
   * @return
   */
  @RequestMapping(value = "/ofertas_por", method = RequestMethod.GET)
  public String listarOfertasPorCategoria(Model modelo,
          @RequestParam("categoria") Long categoria) {
    List<Produto> produtos = repositorioProduto.localizarOfertasPorCategoria(categoria);
    modelo.addAttribute("produtos", produtos);
    return "produto/ofertas";
  }

  /**
   * Buscar produto por filtro e categoria
   * @param modelo
   * @return
   */
  @RequestMapping(value = "/buscar", method = RequestMethod.GET)
  public String buscar(Model modelo,
          @RequestParam("filtro") String filtro,
          @RequestParam("categoria") Long categoria) {
    List<Produto> produtos = repositorioProduto.localizarProdutosPor(filtro, categoria);
    modelo.addAttribute("produtos", produtos);
    return "produto/ofertas";
  }
}
